// packagePersonalCenter/pages/logon/logon.js
// 在Page内添加以下验证规则对象
const passwordReg = /^(?=.*[a-zA-Z])(?=.*[0-9]).{6,}$/; // 密码验证正则，要求至少6位且包含字母和数字
const loginRules = {
  userName: [{
      required: true,
      trigger: "blur",
      message: "请输入您的账号"
    },
    {
      pattern: /^[a-zA-Z0-9_]{3,20}$/,
      trigger: "blur",
      message: "用户名格式不正确，请重新输入"
    }
  ],
  password: [{
      required: true,
      trigger: "blur",
      message: "请输入您的密码"
    },
    {
      pattern: passwordReg,
      trigger: "blur",
      message: "密码强度不符合要求，请重新输入"
    }
  ]
};

Page({
  data: {
    baseUrl: '',
    loginPosition: '',
    currentTab: 'code',
    loginData: {
      userName: '',
      password: '',
    },
    timer: null,
    loginRules: loginRules // 将验证规则添加到data中
  },
  handleUserNameInput: function (e) {
    this.setData({
      'loginData.userName': e.detail.value
    });
  },
  handlePasswordInput: function (e) {
    this.setData({
      'loginData.password': e.detail.value
    });
  },
  showNoLoginPermissionToast() {
    wx.showToast({
      title: '没有登陆权限',
      icon: 'none'
    });
    wx.removeStorageSync('token');
    this.setData({
      loginPosition: ''
    });
  },
  loginHandler(e) {
    // 获取用户名和密码输入框的值
    const userName = this.data.loginData.userName;
    const password = this.data.loginData.password;
    // 简单验证用户名和密码是否为空（这里可以添加更复杂的验证逻辑）
    const userNameValid = userName && userName.trim() !== '';
    const passwordValid = password && password.trim() !== '';
    if (!userNameValid || !passwordValid) {
      return;
    }
    // 显示加载提示（假设存在显示加载的函数，此处仅示意，需根据实际情况调整）
    wx.showLoading({
      title: '正在登录...',
    });
console.log("测试");
    // 发送密码登录请求
    wx.request({
      url: 'http://localhost:8080/login',
      method: "POST",
      header: {
        // 假设添加一个自定义请求头字段表明是小程序端请求
        'X-Client-Type': 'MiniProgram'
      },
      data: {
        username: userName,
        password: password
      },
      success: (resp) => {
        // 隐藏加载提示
        wx.hideLoading();
        if (resp.data.code !== 200) {
          wx.showToast({
            title: '账号或密码错误',
            icon: 'none'
          });
        } else {
          // 新增代码，保存token到本地存储
          if (resp.data.token) {
            wx.setStorageSync('token', resp.data.token);
            const baseUrl=this.data.baseUrl //获取本地连接地址
            const token = wx.getStorageSync('token');
            const userName=this.data.loginData.userName
            wx.request({
              url: baseUrl+'/system/suif/'+userName,
              method: 'GET',
              header: {
                'authorization': 'Bearer\u0020' + token
              },
              success: (resp) => {
                console.log(resp.data.data);
                const app = getApp(); // 获取应用实例
               app.globalData.suifInfo = resp.data.data; // 接口返回的用户信息补充表数据在
                this.setData({
                  loginPosition: resp.data.data.loginPosition
                });
                const posi = this.data.loginPosition;
                if (posi === 1) {
                  if (this.data.baseUrl == null) {
                    wx.switchTab({
                      url: '/pages/personalCenter/personalCenter'
                    });
                  }else{
                    wx.switchTab({
                      url: '/pages/personalCenter/personalCenter'
                    });
                  }
                } else {
                  this.showNoLoginPermissionToast();
                }
              },
              fail: function (err) {
                wx.showToast({
                  title: '没有登陆权限',
                  icon: 'none'
                });
                this.showNoLoginPermissionToast();
              }
            });
          } else {
            wx.showToast({
              title: '登录失败',
              icon: 'none'
            });
          }
        }
      },
      fail: function (err) {
        wx.hideLoading();
        wx.showToast({
            title: '网络请求失败，请稍后再试',
            icon: 'none'
        });
      }
    });
  },
  handleRememberMeChange: function (e) {
    clearTimeout(timer);
    timer = setTimeout(() => {
      this.setData({
        'loginData.userName': e.detail.value
      });
    }, 300); // 可根据实际情况调整延迟时间，这里设置为300毫秒
  },
  // 添加验证输入的方法
  validateInput: function (prop, value) {
    const rules = this.data.loginRules[prop];
    for (const rule of rules) {
      if (rule.required && !value) {
        wx.showToast({
          title: rule.message,
          icon: 'none'
        });
        return false;
      }
      if (rule.pattern && typeof rule.pattern === 'object' && rule.pattern.test) {
        // 增加了类型判断，确保是正则表达式对象且有test方法
        if (!rule.pattern.test(value)) {
          wx.showToast({
            title: rule.message,
            icon: 'none'
          });
          return false;
        }
      }
    }
    return true;
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const token = wx.getStorageSync('token');//获取令牌
    
    const userName = wx.getStorageSync('userName');
    const password = wx.getStorageSync('password');
    const rememberMe = wx.getStorageSync('rememberMe');
    const app = getApp()
    this.setData({
      baseUrl: app.globalConfig.baseUrl
    })
    this.setData({
      'loginData.userName': userName ? userName : this.data.loginData.userName,
      'loginData.password': password ? password : this.data.loginData.password,
      'loginData.rememberMe': rememberMe ? Boolean(rememberMe) : false,
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})